home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_06 / gotwals / dectobin.cpp < prev    next >
Text File  |  1994-04-01  |  1KB  |  36 lines

  1. ====================== Listing 3 ======================
  2. void LargeInt::decToBin(const char* str) {
  3. //
  4. // code to determine value of strSign belongs here
  5. //
  6.    sign = 1; // sign adjusted below
  7.    // find out how many blocks will be transferred
  8.    numblocks = numchars = strlen(str);
  9.    if (numblocks % PackFactor != 0)
  10.       numblocks = numblocks / PackFactor + 1;
  11.    else
  12.       numblocks /= PackFactor;
  13.    // carry out the intial coversion
  14.    last = get9(buf, str, 1 + (numchars-1)%PackFactor);
  15.    *this = (unsigned)strtoul(buf, 0, 10);
  16.    // carry out the rest of the conversion
  17.    while (--numblocks > 0) {
  18.       last++;
  19.       last = get9(buf, last, PackFactor);
  20.       *this = (*this) * tenTo9;
  21.       *this = (*this) + (unsigned)strtoul(buf, 0, 10);
  22.    }
  23.    sign = strSign;
  24. }
  25.  
  26. /* Copy qty characters and store as string
  27.    Return adr of last source character transferred
  28.    ----------------------------------------------- */
  29. const char* get9(char*dest, const char*src, int qty) {
  30.    assert (*src != '\0');
  31.    for (int i = 0; i < qty  &&  (dest[i]=src[i]); i++)
  32.       { };
  33.    dest[i] = '\0';
  34.    return src + i - 1;
  35. }
  36.